package cn.iocoder.yudao.im.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * <p>
 * 群消息
 * </p>
 *
 * @author ZCC
 * @since 2024-07-02
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("system_notice_im_group_message")
public class NoticeImGroupMessage implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 群id
     */
    @TableField("group_id")
    private Long groupId;

    /**
     * 发送用户id
     */
    @TableField("send_id")
    private Long sendId;

    /**
     * 发送用户昵称
     */
    @TableField("send_nick_name")
    private String sendNickName;

    /**
     * 接收用户id,逗号分隔，为空表示发给所有成员
     */
    @TableField("receive_ids")
    private String receiveIds;

    /**
     * 发送内容
     */
    @TableField("content")
    private String content;

    /**
     * 被@的用户id列表，逗号分隔
     */
    @TableField("at_user_ids")
    private String atUserIds;

    /**
     * 是否回执消息
     */
    @TableField("receipt")
    private Boolean receipt;

    /**
     * 回执消息是否完成
     */
    @TableField("receipt_ok")
    private Boolean receiptOk;

    /**
     * 消息类型 0:文字 1:图片 2:文件 3:语音 4:视频 5:任务 10:系统提示
     */
    @TableField("type")
    private Integer type;

    /**
     * 状态 0:未发出 1:已送达  2:撤回 3:已读
     */
    @TableField("status")
    private Integer status;

    /**
     * 发送时间
     */
    @TableField("send_time")
    private LocalDateTime sendTime;


    /**
     * 已读消息数量
     */
    @TableField(exist = false)
    private Integer readCount = 0;

    /**
     * 被@的用户id列表
     */
    @TableField(exist = false)
    private List<Long> atUserList;
    /**
     * 发送人头像
     */
    @TableField(exist = false)
    private String userHeadImages;

}
